找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14962|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 Q* e; E+ F0 a/ B& _$ H9 t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ y, ~; T, e# M( ^" j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' x# B8 A$ o0 X( O. c2 eusage: himr <address> <value>. sample: himr 0x80040000 0x0& v: T4 m: z$ {4 o, X
  F7 L0 ], C- o& d* U7 S
+ n( e* t' U6 r9 D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( n! G) Q, k! f& P% F; b% H) g% m- y8 B# C& T6 @+ L7 [
补充内容 (2012-3-8 09:42):
. G" V+ q! ~" O5 W( jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, t  G9 h+ ]$ m5 y0 c这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 u* w3 M9 X1 i6 a# a$ ?% N
+ Y4 X9 d, V$ w: Ohimr <address> <value>. sample: himr 0x80040000 0x0  w/ r6 C+ v; t$ W+ J

, j: r* p- L: w, o7 d( ~& B, S2 X9 z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 B) }" i) |$ S6 g7 x. }6 V
himr 0x80040000 0x00. n  K  W& S$ ]1 F) y
himr 0x80040001 0x11
: E2 O# Q4 q8 M2 ~& H" ~8 a+ c3 b# ehimr 0x80040002 0x22, e) a7 ]$ F& i  i- o+ G& O
himr 0x80040003 0x33
" z" ^; r+ z7 C, \himr 0x80040004 0x44
: p4 m8 x3 S. Z7 W3 `himr 0x80040005 0x55
+ i3 y# \) B( c6 l0 j) _$ _  u6 M' a* k% o& v/ S
SN也是类似。
; a! B  W3 o7 S0 J( Z& }
8 y  [- O; J, T$ D现在主要是,谁告诉我们MAC和SN的地址?+ U: L9 H. C) q9 W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , [' x* p* J( W9 K: L& o! ?/ H4 s
一直想找到运程修改MAC和SN的办法,苦于无解啊

( c; \3 }4 x, h$ ?5 U源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* o/ @  Z  k) c* z6 k5 N3 h9 K( `4 O5 I7 i; G$ ?, U
修改的代码早有了。到今天不会编译。
- p% Q( ~( s9 @% N" g需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, X# T2 G9 \+ D2 w5 K( K, H
  2. #include <malloc.h>8 W; q6 o  E* B3 @  M, }
  3. #include <sys/types.h>
    1 X& s6 E+ G! r0 o$ y
  4. #include <sys/stat.h>" Q5 g2 y" M3 P; `( p$ e
  5. #include <sys/ioctl.h>
    7 I7 y9 f. g) G' e& P
  6. #include <stdio.h>9 y7 u/ `3 |9 n$ y% S- \
  7. #include <string.h>
    - M) s) }/ H( p2 ^3 |

  8. 6 J' c- K3 L8 \2 m+ c/ x; j
  9. typedef struct {
    ) s" s6 }5 T+ u$ l9 m& C' B
  10.         unsigned int        e2prom_cmd_sub_addr;) w8 w  L. `7 X3 E# I- o% J
  11.         unsigned int        sub_addr_count;, M" _; Z- o. j! S7 E. X
  12.         unsigned char*        e2prom_cmd_data;
    . j0 z' f' D/ q3 Q; Y8 A
  13.         unsigned int        data_count;
    * z9 Q  Z) v* }' L! V
  14. } e2prom_s_cmd;' g0 B0 [+ v5 M: ^+ f* q6 K& z
  15. ; q  M7 n, K* t( R7 N% I7 X" H; l
  16. #define E2PROM_CMD_READ 1! V1 Z' v  [' R) h+ `
  17. #define E2PROM_CMD_WRITE 2( l! Z3 Y8 D1 ~' K& L1 Q) B# R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 s# U) g) v0 j5 ]6 j- O) \' u

  19. 0 v1 T! b' n3 \7 @! m" n
  20. static int readparam(unsigned char *mac, unsigned char *stbid); {7 {4 Q/ B& N9 Y4 K7 V
  21. {! v  J% z8 ]; H- q$ X+ A  ~5 ^
  22.         int fd, ret;7 U/ f3 ^; h; Y* Z
  23.         e2prom_s_cmd arg;, I! x0 v" S+ U+ A
  24.         unsigned char buf[0x18];% L9 i0 ~- G' y- S! Y- v

  25. . m* ]# O9 h- ^& a2 a! X! H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . y8 X! ~! C% H7 d5 }* s' Z
  27.         if (fd  < 0) {8 M) K, n/ w  L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 T" K# V, X2 y( N" D1 v
  29.                 return -1;
    # v: L$ d, c( i) _# b! S: @
  30.         }
    % `7 {: {+ `4 \' c: P/ H& S* Q' G  N
  31.         arg.sub_addr_count      = 2;
    $ n* n# a% z4 B# ]
  32.         arg.data_count          = 0x18;
    2 d3 G" ]- ?& }9 X: z) S) |
  33.         arg.e2prom_cmd_sub_addr = 0x290;. ?5 ^6 v, F! h, Z% T9 h/ P
  34.         arg.e2prom_cmd_data     = buf;, _9 J! y2 [5 c. X4 v0 p9 s! B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; \2 Q' {  n9 i1 h) `8 G
  36.         if (ret != 0) {
    4 {* p& x! d# e; Q: ^$ m5 ]. f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- X! d# e; w( Z7 ~
  38.                 return -1;
    8 u1 h8 L. L9 w$ A/ C8 Z
  39.         }+ A8 h% x' V0 Y+ E' E$ j" @
  40.         memcpy(mac, buf, 6);% Y# Y7 ~! m% M- x7 x' |" M
  41.         memcpy(stbid, &buf[6], 18);
    2 _5 a$ L8 p, ~& ]- \
  42.         stbid[18] = '\0';
    ) b, H  I: e* W! v* e# ~

  43. , e! [# [1 z. Z- A  q
  44.         return 0;! V8 a2 q% }2 [7 Z: ]
  45. }) Y5 v. s" `3 }" f( B
  46. 0 U3 y0 T9 J2 o, H" r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) ~, [  s7 a2 l, X" U
  48. {( V6 W; N. o9 G: o# K. Z5 |' N
  49.         int fd, ret;$ t& |2 @$ R0 O- s: C& s; W
  50.         e2prom_s_cmd arg;# M; v2 @6 l* A
  51.         unsigned char buf[0x18];( E6 ^/ U: P  E9 k" {7 o

  52. ( g; m+ z! w" p) ]: F9 Z- q
  53.         memcpy(buf, mac, 6);
    3 q: I6 y: `& i0 D+ W- s8 f/ a' K- B
  54.         memcpy(&buf[6], stbid, 18);
    1 [; m1 T$ [+ x2 n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& F# I" T% o; D5 u' _+ n
  56.         if (fd  < 0) {
    : h6 G$ E3 f; Q8 |4 `; K% p! p, m" C9 s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      f, [3 b" j, F" t7 L" X6 c% d* d
  58.                 return -1;. W' Q& y  X, v7 p- z1 a2 ]
  59.         }
    " T2 X# X& n$ R  L
  60.         arg.sub_addr_count      = 2;
    8 r" F9 k+ c- w. j
  61.         arg.data_count          = 0x18;7 f: P; E) l  Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! I5 P3 w8 h% v' C
  63.         arg.e2prom_cmd_data     = buf;( w- |& \; H/ }4 k6 Y9 b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 F$ p7 Z) c7 S  m
  65.         if (ret != 0) {0 }! ~) A. I6 n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 r% f. D. T& B2 ^3 n6 R
  67.                 return -1;/ d6 h9 P) e$ U4 T1 i8 a
  68.         }% d1 s# c$ M) y: ]6 L/ ^

  69. # V0 B5 C" j* o# U
  70.         return 0;; T; r. Y  ]0 ]* F; @" L5 Q
  71. }
    ( W, }2 Z% L+ \  j- c4 M# m! J

  72. 2 V6 G1 W) Q3 R1 J% e# T# g
  73. int main()# W5 T# X8 _' _$ Q0 d: _
  74. {3 F5 }& k$ b! b* n
  75.         char c;7 R- H, I* d$ s
  76.         int i, macs[6];4 H3 e3 ^4 D/ H8 L7 ]' ]+ }0 e
  77.         unsigned char mac[6];; |3 l; v- [; I8 s9 Z8 G9 M
  78.         unsigned char stbid[256];& P$ e# v2 s" j% L( r( U' I3 J: @
  79. 9 q/ v  S$ d$ f; q4 E1 b
  80.         if (readparam(mac, stbid) < 0)
    * h) U1 O6 G, N
  81.                 return 1;5 F) N; H7 z$ C; I9 {

  82. 1 j, N0 R5 n) J& D$ v
  83.         printf("Current parameters: \n");& H+ d/ t. O8 ^& @6 {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! M* y; M) ~3 _3 l2 T! x! o
  85.         printf("  STBID: %s\n", stbid);% D& q' t$ p" q+ x
  86.        
    5 s% o: A% B& T& q: b5 }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 C" f5 B! b9 U" q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! a* O2 [3 b8 a/ s' ?
  89.                 printf("Input MAC error\n");
    " ?$ B/ l4 I/ O- M3 m
  90.                 return 1;- o/ ]! s5 Y( R
  91.         }
    7 Z. E1 ^2 A7 ~" I# J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ J; y% W9 i3 ?' e* H
  93.         printf("\nPlease input new STBID: ");
    8 K7 S+ g" ?4 o! f6 d, G
  94.         scanf("%s", stbid);
    " b1 n$ `; H& G' K" h7 Y: S9 T
  95.         if (strlen(stbid) != 18) {5 q7 ~$ C0 V; ^+ E3 s* i: @1 f
  96.                 printf("Invalid stbid\n");
    # k3 U0 D' p/ g
  97.                 return 1;+ r: I- T  W3 H1 Q6 I5 C6 F2 w
  98.         }/ y- M7 Q7 _" W" R
  99.         printf("\nNew parameters: \n");2 w2 Z* e9 z/ [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 F* y$ M4 b' |: F; k) J) X
  101.         printf("  STBID: %s\n", stbid);: w! `! i+ A. ~5 R4 k

  102. 6 r/ ~5 ^% y: R2 a' [7 q2 `1 V
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ o% n! ?  J: u( k/ _; U" }
  104.         for (;;) {
    " j7 V- n5 ^% S  [" O
  105.                 c = getchar();4 K1 q' f7 O$ |$ }* R
  106.                 if (c == 'y' || c == 'Y'), ?$ y7 }/ w6 _. G: v4 o
  107.                         break;
    3 `5 }4 `5 J' i
  108.                 if (c == 'n' || c == 'N') {
    9 c$ _0 s, t8 d9 c% H9 G
  109.                         printf("\nAborted.\n");
    ( a0 v" \6 K/ a1 l% _' y) Q
  110.                         return 1;
    1 v+ n  m. O$ I$ G9 g
  111.                 }" G" d; r: l' W2 O& E! U; z- x; ]
  112.         }7 f/ Q( M/ J7 E& F2 \
  113.         if (writeparam(mac, stbid) == 0)
    + x' A6 z- S4 P+ t5 C- D
  114.                 printf("Parameters changed.\n");
    ) l% e1 c# H% T2 i
  115. : g1 M$ k7 j) D" s
  116.         return 0;% v  ?& W6 Q% g& g" X1 d1 I
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 $ F  j' D8 P- u: A  [  j
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( t3 L: y- m" p; d" x
你用的编译命令行格式是什么?' v% f+ Z& t4 \  q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-12-4 22:01 , Processed in 0.025035 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表