找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15737|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, c, p! m5 _, C% v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& l- r0 N( D3 D! r3 u6 s9 @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# A( j8 K5 }$ t3 D: fusage: himr <address> <value>. sample: himr 0x80040000 0x0" O, U" x' X+ N; ^/ v: a& [7 F9 h

  G3 P$ S% \  W0 q
5 P6 [# J3 X, b3 J/ d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) C1 T) V. S% _, s$ k* t+ \1 o2 K; ~- n4 I0 e
补充内容 (2012-3-8 09:42):
- ]( V5 S( w  d5 ?8 h2 yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 s1 }$ T* R2 E. F3 ?$ r1 a! g
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# w+ A- |& J( ?; v  d
) e) t3 e+ F9 L, v5 Z: y
himr <address> <value>. sample: himr 0x80040000 0x0
& W+ h- t+ @5 d4 i: I" U+ u& ]3 S- r( j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 f2 Q( Q5 E) p3 x3 O% G
himr 0x80040000 0x00
; q. _: H# |' Y' `$ rhimr 0x80040001 0x11. Z& W& y9 u8 b  v
himr 0x80040002 0x22
+ Y7 J5 D( ~) ehimr 0x80040003 0x336 K# H% A: u) b
himr 0x80040004 0x44; b, Q' I. m4 X
himr 0x80040005 0x55
; B/ O5 k2 ~4 k. b% W! R- r7 y5 C# s
SN也是类似。
9 y1 n) J+ n( y+ q5 @# w0 L) {  T
+ u! v4 [, L' f' i" l& M5 F现在主要是,谁告诉我们MAC和SN的地址?
6 B& R0 f  j! o4 p5 C7 z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 Z/ i! u) r& C* Z2 |一直想找到运程修改MAC和SN的办法,苦于无解啊

; g1 W# S8 @! `" E! W; i% x源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ E$ N( N2 h) y8 J4 H2 f# a- e2 @; j' o# S8 \$ C4 E
修改的代码早有了。到今天不会编译。6 B. i  g" b4 E, W0 ^2 D% u. X& z& s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , M- f# \1 v) q) r" b9 B; ^
  2. #include <malloc.h>
    % C, r3 \& L& c+ [& X+ K$ ]) P
  3. #include <sys/types.h>- B1 w* S  f* h8 P, w- {: H1 F
  4. #include <sys/stat.h>1 i# i" d0 _1 n( |5 J6 T
  5. #include <sys/ioctl.h>
    7 u: k, _7 E4 x# Q8 `3 G. t
  6. #include <stdio.h>! y2 N0 `6 o( e- B* u# [$ \
  7. #include <string.h>) J: o+ K5 f8 [; e

  8. 9 i* h+ ?4 V* ]  Z5 s: z: v4 y
  9. typedef struct {
    # d/ F9 B% k: V# w- X; a2 l" T* v
  10.         unsigned int        e2prom_cmd_sub_addr;: P" d: G1 f; u
  11.         unsigned int        sub_addr_count;6 e$ b. m, E" ~. {9 I- e& C* X4 w8 h
  12.         unsigned char*        e2prom_cmd_data;9 f" U  c: w" k. G
  13.         unsigned int        data_count;2 j! |, p) `5 o6 d
  14. } e2prom_s_cmd;2 @( K+ r6 Z2 V. H4 W( h0 Z

  15. 0 ^' w+ H+ i  @5 T% L- D0 m7 ^) ]
  16. #define E2PROM_CMD_READ 1
    ) Q0 E' c' Y" e$ |
  17. #define E2PROM_CMD_WRITE 24 J) o, M: n. T7 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / e% m) q4 o! X% L, C; F7 l

  19. ( z& ?) x0 v1 _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# B( W! N! Y) B: t& t" o/ Q5 m
  21. {
    2 `' F/ Y$ H8 P4 Z4 u& O
  22.         int fd, ret;
    ( V+ J0 h4 S8 T3 k5 {
  23.         e2prom_s_cmd arg;$ R) Q: [, I4 C; [- W$ o
  24.         unsigned char buf[0x18];# M* {/ S0 O: w+ }% }7 W* y% o0 u

  25. $ G4 V" D% F' a/ h- u7 o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 l6 T  S  `4 s2 [# ]! V
  27.         if (fd  < 0) {
    8 X/ Y3 E( ]+ L8 a. X5 Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 a/ y# E* O/ f; b) a3 T' D' N; a8 l
  29.                 return -1;# w3 Q$ k" L3 A) S# @: ~
  30.         }3 ~% W  b" j0 G  S
  31.         arg.sub_addr_count      = 2;
    " u# q# B+ H& F
  32.         arg.data_count          = 0x18;0 Z( l* P: d3 x6 Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 u* q  r. [! w6 t" d7 _- N5 ]: m
  34.         arg.e2prom_cmd_data     = buf;
    ( O& I. V  D) p, b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 K" ]6 [% _; N# b" H4 x
  36.         if (ret != 0) {
    . E6 ]2 L. x2 }" J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( L0 L+ a& I. x: P
  38.                 return -1;
    / F7 U! H" N; z9 v* Q
  39.         }
    ; I$ n3 M3 @8 s1 e( m) ~5 d
  40.         memcpy(mac, buf, 6);( S" V1 _, S; f" I+ v; t4 ~# X
  41.         memcpy(stbid, &buf[6], 18);; s4 s9 g5 W+ f6 h  P
  42.         stbid[18] = '\0';, V. B: ^! }) _8 C- A2 m3 S. D

  43. 4 L2 \( }1 m4 `
  44.         return 0;7 K. B: }! p' ]7 d
  45. }
    6 x& S, e& X" X7 a" O9 g2 ]/ L9 v

  46. ( d+ W4 l' x& }' l7 \8 ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 K9 K" |0 v0 V; X  o% B9 n1 a( O
  48. {
    - d* q2 |" \) z0 S; c. F
  49.         int fd, ret;2 f/ v/ e6 j/ V
  50.         e2prom_s_cmd arg;
    . }* x! I' a+ Z# e- K
  51.         unsigned char buf[0x18];/ K; F& ]" X" A" y0 W4 V& K+ y. h
  52. ! f- U/ B) c  z5 k% h
  53.         memcpy(buf, mac, 6);" b1 j8 p, ~  F( t+ A% w& ]
  54.         memcpy(&buf[6], stbid, 18);/ m0 C8 `- D( u5 I2 K. Z' }) }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% K( g7 u7 y) m& r$ ?6 [- b5 w
  56.         if (fd  < 0) {, L2 i" l9 ^3 E" h( h/ A$ H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; M) z! C/ ~9 |" P' U
  58.                 return -1;
    $ T( D2 }- g8 I. }' L( X
  59.         }: K# Q' r9 T2 h( ]3 Y: N
  60.         arg.sub_addr_count      = 2;+ k4 f2 B6 M% \' J' @: ?/ v2 R
  61.         arg.data_count          = 0x18;- ^: I( G. Q  L0 ^! f
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 h4 Z& A9 Z8 ~8 F" p
  63.         arg.e2prom_cmd_data     = buf;7 a" [; d3 U2 y  y1 \7 q) `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- c  h1 w' I- D- H; J2 F( b* M
  65.         if (ret != 0) {
    5 t7 R5 D( d& |# m# h8 l# T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 r! [4 b- I0 Y& s1 l
  67.                 return -1;! _0 c+ V8 c! o* O
  68.         }
    " v3 Y( V5 t, r# Z+ e2 f
  69. 8 }; }" t" _1 B* ^" K
  70.         return 0;* v  C5 y( e4 M  K1 R
  71. }7 I2 X% T: J. F2 p! j/ Z

  72. 1 I" E; a% T" {3 }1 D! s! ]% y
  73. int main()
    . ^; }  U! d' R. A
  74. {
    + E: w( c! N+ ]8 n9 G% d
  75.         char c;5 Q$ ^+ ?" T: P( v& e- S. a% F5 f
  76.         int i, macs[6];
    * W8 o+ v8 g  h  z
  77.         unsigned char mac[6];
    / X0 W$ _- g/ A$ [6 y; S
  78.         unsigned char stbid[256];8 B/ r) J' q6 Y6 P% k9 J

  79. # I; v3 B! q" r8 p7 a5 N, |" k* n
  80.         if (readparam(mac, stbid) < 0)
    ' F! C) W; F+ V) d8 P0 l( B
  81.                 return 1;4 L* ?/ t  W. ?. f6 N$ M, g3 a5 R
  82. ! Y2 h- S* T6 E) A2 V1 k
  83.         printf("Current parameters: \n");3 b4 l) {- m) j# P9 w4 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 M) Q; q1 d  |
  85.         printf("  STBID: %s\n", stbid);
    : ^- \* M8 M3 W0 f! d6 J
  86.         : i8 I8 ^. L$ q* p, R- X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 Y1 ]" c' g9 [' D+ ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 D% N4 g& K4 x* |/ ]/ M6 o: v
  89.                 printf("Input MAC error\n");6 h- @) t4 Z  g/ ]7 b  z( p8 b
  90.                 return 1;
    9 V, f+ G  S, U* [* e! d
  91.         }
    * |: ]  O, g8 \1 D0 `2 x
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) v+ \# R1 }- q" y3 h1 Q5 Z  o
  93.         printf("\nPlease input new STBID: ");
    & i* w- M9 K8 r/ {8 e% b
  94.         scanf("%s", stbid);+ o. t5 G8 Q3 h8 f
  95.         if (strlen(stbid) != 18) {
    & u6 h1 s: p$ O* v5 w
  96.                 printf("Invalid stbid\n");, A1 l+ ~  {6 g! y$ H- g$ [
  97.                 return 1;# i& O- @6 ~  A7 a, d/ {$ J& Q2 o9 o
  98.         }
    3 }0 O# R, C' Z9 l/ c* @' S" ]2 a: s
  99.         printf("\nNew parameters: \n");5 w1 M0 H+ @! K; C+ F4 P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 F2 E( @, H; h1 e
  101.         printf("  STBID: %s\n", stbid);
    * K. e4 }$ a1 w( v7 Y/ B

  102. & w3 ^2 y* s- c( C4 O) |  ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # l' v' u' ]3 t5 Z! O
  104.         for (;;) {. m6 `2 N& h8 h0 ~, P
  105.                 c = getchar();
    ! Y& O* P* ]/ c" H2 M
  106.                 if (c == 'y' || c == 'Y')
    % [' }- U: N, W
  107.                         break;
    ) H  V2 v3 `; F- ~4 ]3 G/ _' B
  108.                 if (c == 'n' || c == 'N') {
    8 T5 u9 Q5 s3 H# {4 T+ \* }
  109.                         printf("\nAborted.\n");
    0 _. v3 R3 q% T
  110.                         return 1;, o2 c, @% a5 C# w
  111.                 }
    0 ^1 |+ W7 r: D" L3 y+ S
  112.         }9 ^: \, S; V3 X: q
  113.         if (writeparam(mac, stbid) == 0)
    1 e& L- N9 u" H/ M( `
  114.                 printf("Parameters changed.\n");
    $ @1 F# P4 l. j* x% j
  115. 9 Q7 O) H* [0 P# {, `3 R2 O0 i/ x; h
  116.         return 0;
    / _+ e( w  P" Z6 }# h- T6 J
  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 4 G0 g: H2 h2 {  d7 C6 L
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" D! N( W2 @: X0 Q
你用的编译命令行格式是什么?
7 J3 R6 L9 l+ A
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

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

GMT+8, 2026-3-10 19:40 , Processed in 0.028483 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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